"""
公共接口层
"""

import os
from conf import settings
from db import models


# 获取所有的学校接口函数
def get_all_school_interface():
    # 1. 构造存放学校对象的目录路径
    DIR_PATH = os.path.join(
        settings.DB_PATH, 'School'
    )

    # 2. 如果存放学校信息的目录是否存在
    if not os.path.exists(DIR_PATH):
        return False, "当前没有学校，请联系管理员先创建学校！"

    return True, os.listdir(DIR_PATH)


# 通用登录接口函数
def login_common_interface(username, password, user_type):
    # 1. 检查用户名是否存在
    if user_type == 'admin':
        obj = models.Admin.select(username)
    elif user_type == 'student':
        obj = models.Student.select(username)
    elif user_type == 'teacher':
        obj = models.Teacher.select(username)
    else:
        return False, "用户类型不存在！"

    # 2. 如果不存在则直接返回
    if not obj:
        return False, "用户名还未注册！"

    # 3. 如果存在则进行登录
    flag = obj.login(password)
    if not flag:
        return False, "用户名或密码错误！"
    else:
        return True, f"[{username}] 用户登录成功！"


def get_all_course_interface():
    # 1. 构造存放学校对象的目录路径
    DIR_PATH = os.path.join(
        settings.DB_PATH, 'Course'
    )

    # 2. 如果存放学校信息的目录是否存在
    if not os.path.exists(DIR_PATH):
        return False, "当前没有课程，请联系管理员先创建课程！"

    return True, os.listdir(DIR_PATH)



# 获取学校下的所有课程
def get_course_in_school_interface(school_name):
    # 1. 根据学校名字获取学校对象
    school_obj = models.School.select(school_name)

    # 2. 检查学校下是否有课程
    if not school_obj.course_list:
        return False, "当前学校中没有课程，请联系管理员添加课程"

    # 3. 返回学校的课程
    return True, school_obj.course_list